<HTML>
<!--
  -- Copyright (c) 1996-1999
  -- Silicon Graphics Computer Systems, Inc.
  --
  -- Permission to use, copy, modify, distribute and sell this software
  -- and its documentation for any purpose is hereby granted without fee,
  -- provided that the above copyright notice appears in all copies and
  -- that both that copyright notice and this permission notice appear
  -- in supporting documentation.  Silicon Graphics makes no
  -- representations about the suitability of this software for any
  -- purpose.  It is provided "as is" without express or implied warranty.
  --
  -- Copyright (c) 1994
  -- Hewlett-Packard Company
  --
  -- Permission to use, copy, modify, distribute and sell this software
  -- and its documentation for any purpose is hereby granted without fee,
  -- provided that the above copyright notice appears in all copies and
  -- that both that copyright notice and this permission notice appear
  -- in supporting documentation.  Hewlett-Packard Company makes no
  -- representations about the suitability of this software for any
  -- purpose.  It is provided "as is" without express or implied warranty.
  --
  -->
<Head>
<Title>set&lt;Key, Compare, Alloc&gt;</Title>
<!-- Generated by htmldoc -->
</HEAD>
<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" 
	ALINK="#ff0000"> 
<IMG SRC="CorpID.gif" 
     ALT="SGI" HEIGHT="43" WIDTH="151"> 
<!--end header-->
<BR Clear>
<H1>set&lt;Key, Compare, Alloc&gt;</H1>

<Table CellPadding=0 CellSpacing=0 width=100%>
<TR>
<TD Align=left><Img src = "containers.gif" Alt=""   WIDTH = "194"  HEIGHT = "38" ></TD>
<TD Align=right><Img src = "type.gif" Alt=""   WIDTH = "194"  HEIGHT = "39" ></TD>
</TR>
<TR>
<TD Align=left VAlign=top><b>Category</b>: containers</TD>
<TD Align=right VAlign=top><b>Component type</b>: type</TD>
</TR>
</Table>

<h3>Description</h3>
<tt>Set</tt> is a
<A href="SortedAssociativeContainer.html">Sorted Associative Container</A> that stores objects of type <tt>Key</tt>.
<tt>Set</tt> is a
<A href="SimpleAssociativeContainer.html">Simple Associative Container</A>, 
meaning that its value type, as well as its 
key type, is <tt>Key</tt>.  It is also a
<A href="UniqueAssociativeContainer.html">Unique Associative Container</A>,
meaning that no two elements are the same.
<P>
<tt>Set</tt> and <tt><A href="multiset.html">multiset</A></tt> are
particularly well suited to the set algorithms
<tt><A href="includes.html">includes</A></tt>,
<tt><A href="set_union.html">set_union</A></tt>,
<tt><A href="set_intersection.html">set_intersection</A></tt>,
<tt><A href="set_difference.html">set_difference</A></tt>, and
<tt><A href="set_symmetric_difference.html">set_symmetric_difference</A></tt>.
The reason for this is twofold.  First, the set algorithms require
their arguments to be sorted ranges, and, since
<tt><A href="set.html">set</A></tt> and 
<tt><A href="multiset.html">multiset</A></tt> are 
<A href="SortedAssociativeContainer.html">Sorted Associative Containers</A>, 
their elements are always sorted in ascending order. 
Second, the output range of these algorithms is always sorted, and
inserting a sorted range into a <tt>set</tt> or <tt>multiset</tt> is a
fast operation: the
<A href="UniqueSortedAssociativeContainer.html">Unique Sorted Associative Container</A> 
and <A href="MultipleSortedAssociativeContainer.html">Multiple Sorted Associative Container</A>
requirements guarantee that inserting a
range takes only linear time if the range is already sorted.
<P>
<tt>Set</tt> has the important property that inserting a new element
into a <tt>set</tt> does not invalidate iterators that point to existing
elements.  Erasing an element from a set also does not invalidate
any iterators, except, of course, for iterators that actually point 
to the element that is being erased.
<h3>Example</h3>
<pre>
struct ltstr
{
  bool operator()(const char* s1, const char* s2) const
  {
    return strcmp(s1, s2) &lt; 0;
  }
};

int main()
{
  const int N = 6;
  const char* a[N] = {&quot;isomer&quot;, &quot;ephemeral&quot;, &quot;prosaic&quot;, 
                      &quot;nugatory&quot;, &quot;artichoke&quot;, &quot;serif&quot;};
  const char* b[N] = {&quot;flat&quot;, &quot;this&quot;, &quot;artichoke&quot;,
                      &quot;frigate&quot;, &quot;prosaic&quot;, &quot;isomer&quot;};

  set&lt;const char*, ltstr&gt; A(a, a + N);
  set&lt;const char*, ltstr&gt; B(b, b + N);
  set&lt;const char*, ltstr&gt; C;

  cout &lt;&lt; &quot;Set A: &quot;;
  <A href="copy.html">copy</A>(A.begin(), A.end(), <A href="ostream_iterator.html">ostream_iterator</A>&lt;const char*&gt;(cout, &quot; &quot;));
  cout &lt;&lt; endl;
  cout &lt;&lt; &quot;Set B: &quot;;
  <A href="copy.html">copy</A>(B.begin(), B.end(), <A href="ostream_iterator.html">ostream_iterator</A>&lt;const char*&gt;(cout, &quot; &quot;));   
  cout &lt;&lt; endl;

  cout &lt;&lt; &quot;Union: &quot;;
  <A href="set_union.html">set_union</A>(A.begin(), A.end(), B.begin(), B.end(),
            <A href="ostream_iterator.html">ostream_iterator</A>&lt;const char*&gt;(cout, &quot; &quot;),
            ltstr());   
  cout &lt;&lt; endl;

  cout &lt;&lt; &quot;Intersection: &quot;;
  <A href="set_intersection.html">set_intersection</A>(A.begin(), A.end(), B.begin(), B.end(),
                   <A href="ostream_iterator.html">ostream_iterator</A>&lt;const char*&gt;(cout, &quot; &quot;),
                   ltstr());    
  cout &lt;&lt; endl;

  <A href="set_difference.html">set_difference</A>(A.begin(), A.end(), B.begin(), B.end(),
                 <A href="insert_iterator.html">inserter</A>(C, C.begin()),
                 ltstr());
  cout &lt;&lt; &quot;Set C (difference of A and B): &quot;;
  <A href="copy.html">copy</A>(C.begin(), C.end(), <A href="ostream_iterator.html">ostream_iterator</A>&lt;const char*&gt;(cout, &quot; &quot;));
  cout &lt;&lt; endl;
}
</pre>
<h3>Definition</h3>
Defined in the standard header <A href="set">set</A>, and in the nonstandard
backward-compatibility header <A href="set.h">set.h</A>.
<h3>Template parameters</h3>
<Table border>
<TR>
<TH>
Parameter
</TH>
<TH>
Description
</TH>
<TH>
Default
</TH>
</TR>
<TR>
<TD VAlign=top>
<tt>Key</tt>
</TD>
<TD VAlign=top>
The set's key type and value type.  This is also defined as <tt>set::key_type</tt>
   and <tt>set::value_type</tt>
</TD>
<TD VAlign=top>
&nbsp;
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>Compare</tt>
</TD>
<TD VAlign=top>
The key comparison function, a <A href="StrictWeakOrdering.html">Strict Weak Ordering</A> whose
   argument type is <tt>key_type</tt>; it returns <tt>true</tt> if its first 
   argument is less than its second argument, and <tt>false</tt> otherwise.
   This is also defined as <tt>set::key_compare</tt> and <tt>set::value_compare</tt>.
</TD>
<TD VAlign=top>
<tt><A href="less.html">less</A>&lt;Key&gt;</tt>
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>Alloc</tt>
</TD>
<TD VAlign=top>
The <tt>set</tt>'s allocator, used for all internal memory management.
</TD>
<TD VAlign=top>
<tt><A href="Allocators.html">alloc</A></tt>
</TD>
</tr>
</table>
<h3>Model of</h3>
<A href="UniqueSortedAssociativeContainer.html">Unique Sorted Associative Container</A>, 
<A href="SimpleAssociativeContainer.html">Simple Associative Container</A>
<h3>Type requirements</h3>
<UL>
<LI>
<tt>Key</tt> is <A href="Assignable.html">Assignable</A>.
<LI>
<tt>Compare</tt> is a <A href="StrictWeakOrdering.html">Strict Weak Ordering</A> whose argument type
   is <tt>Key</tt>.
<LI>
<tt>Alloc</tt> is an <A href="Allocators.html">Allocator</A>.
</UL>
<h3>Public base classes</h3>
None.
<h3>Members</h3>
<Table border>
<TR>
<TH>
Member
</TH>
<TH>
Where defined
</TH>
<TH>
Description
</TH>
</TR>
<TR>
<TD VAlign=top>
<tt>value_type</tt>
</TD>
<TD VAlign=top>
 <A href="Container.html">Container</A>
</TD>
<TD VAlign=top>
The type of object, <tt>T</tt>, stored in the set.
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>key_type</tt>
</TD>
<TD VAlign=top>
 <A href="AssociativeContainer.html">Associative Container</A>
</TD>
<TD VAlign=top>
The key type associated with <tt>value_type</tt>.
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>key_compare</tt>
</TD>
<TD VAlign=top>
 <A href="SortedAssociativeContainer.html">Sorted Associative Container</A>
</TD>
<TD VAlign=top>
 <A href="functors.html">Function object</A> that compares two keys for ordering.
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>value_compare</tt>
</TD>
<TD VAlign=top>
 <A href="SortedAssociativeContainer.html">Sorted Associative Container</A>
</TD>
<TD VAlign=top>
 <A href="functors.html">Function object</A> that compares two values for ordering.
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>pointer</tt>
</TD>
<TD VAlign=top>
 <A href="Container.html">Container</A>
</TD>
<TD VAlign=top>
Pointer to <tt>T</tt>.
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>reference</tt>
</TD>
<TD VAlign=top>
 <A href="Container.html">Container</A>
</TD>
<TD VAlign=top>
Reference to <tt>T</tt>
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>const_reference</tt>
</TD>
<TD VAlign=top>
 <A href="Container.html">Container</A>
</TD>
<TD VAlign=top>
Const reference to <tt>T</tt>
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>size_type</tt>
</TD>
<TD VAlign=top>
 <A href="Container.html">Container</A>
</TD>
<TD VAlign=top>
An unsigned integral type.
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>difference_type</tt>
</TD>
<TD VAlign=top>
 <A href="Container.html">Container</A>
</TD>
<TD VAlign=top>
A signed integral type.
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>iterator</tt>
</TD>
<TD VAlign=top>
 <A href="Container.html">Container</A>
</TD>
<TD VAlign=top>
Iterator used to iterate through a <tt>set</tt>.
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>const_iterator</tt>
</TD>
<TD VAlign=top>
 <A href="Container.html">Container</A>
</TD>
<TD VAlign=top>
Const iterator used to iterate through a <tt>set</tt>.  (<tt>Iterator</tt> and
   <tt>const_iterator</tt> are the same type.)
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>reverse_iterator</tt>
</TD>
<TD VAlign=top>
 <A href="ReversibleContainer.html">Reversible Container</A>
</TD>
<TD VAlign=top>
Iterator used to iterate backwards through a <tt>set</tt>.
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>const_reverse_iterator</tt>
</TD>
<TD VAlign=top>
 <A href="ReversibleContainer.html">Reversible Container</A>
</TD>
<TD VAlign=top>
Const iterator used to iterate backwards through a <tt>set</tt>.
  (<tt>Reverse_iterator</tt> and <tt>const_reverse_iterator</tt> are the same type.)
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>iterator begin() const</tt>
</TD>
<TD VAlign=top>
 <A href="Container.html">Container</A>
</TD>
<TD VAlign=top>
Returns an <tt>iterator</tt> pointing to the beginning of the <tt>set</tt>.
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>iterator end() const</tt>
</TD>
<TD VAlign=top>
 <A href="Container.html">Container</A>
</TD>
<TD VAlign=top>
Returns an <tt>iterator</tt> pointing to the end of the <tt>set</tt>.
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>reverse_iterator rbegin() const</tt>
</TD>
<TD VAlign=top>
 <A href="ReversibleContainer.html">Reversible Container</A>
</TD>
<TD VAlign=top>
Returns a <tt>reverse_iterator</tt> pointing to the beginning of the
   reversed set.
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>reverse_iterator rend() const</tt>
</TD>
<TD VAlign=top>
 <A href="ReversibleContainer.html">Reversible Container</A>
</TD>
<TD VAlign=top>
Returns a <tt>reverse_iterator</tt> pointing to the end of the
   reversed set.
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>size_type size() const</tt>
</TD>
<TD VAlign=top>
 <A href="Container.html">Container</A>
</TD>
<TD VAlign=top>
Returns the size of the <tt>set</tt>.
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>size_type max_size() const</tt>
</TD>
<TD VAlign=top>
 <A href="Container.html">Container</A>
</TD>
<TD VAlign=top>
Returns the largest possible size of the <tt>set</tt>.
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>bool empty() const</tt>
</TD>
<TD VAlign=top>
 <A href="Container.html">Container</A>
</TD>
<TD VAlign=top>
<tt>true</tt> if the <tt>set</tt>'s size is <tt>0</tt>.
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>key_compare key_comp() const</tt>
</TD>
<TD VAlign=top>
 <A href="SortedAssociativeContainer.html">Sorted Associative Container</A>
</TD>
<TD VAlign=top>
Returns the <tt>key_compare</tt> object used by the <tt>set</tt>.
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>value_compare value_comp() const</tt>
</TD>
<TD VAlign=top>
 <A href="SortedAssociativeContainer.html">Sorted Associative Container</A>
</TD>
<TD VAlign=top>
Returns the <tt>value_compare</tt> object used by the <tt>set</tt>.
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>set()</tt>
</TD>
<TD VAlign=top>
 <A href="Container.html">Container</A>
</TD>
<TD VAlign=top>
Creates an empty <tt>set</tt>.
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>set(const key_compare&amp; comp)</tt>
</TD>
<TD VAlign=top>
 <A href="SortedAssociativeContainer.html">Sorted Associative Container</A>
</TD>
<TD VAlign=top>
Creates an empty <tt>set</tt>, using <tt>comp</tt> as the <tt>key_compare</tt> object.
</TD>
</TR>
<TR>
<TD VAlign=top>
<pre>
template &lt;class <A href="InputIterator.html">InputIterator</A>&gt;
set(InputIterator f, InputIterator l)
<A href="#1">[1]</A>
</pre>
</TD>
<TD VAlign=top>
 <A href="UniqueSortedAssociativeContainer.html">Unique Sorted Associative Container</A>
</TD>
<TD VAlign=top>
Creates a set with a copy of a range.
</TD>
</TR>
<TR>
<TD VAlign=top>
<pre>
template &lt;class <A href="InputIterator.html">InputIterator</A>&gt;
set(InputIterator f, InputIterator l,
    const key_compare&amp; comp)
<A href="#1">[1]</A>
</pre>
</TD>
<TD VAlign=top>
 <A href="UniqueSortedAssociativeContainer.html">Unique Sorted Associative Container</A>
</TD>
<TD VAlign=top>
Creates a set with a copy of a range, using <tt>comp</tt> as the <tt>key_compare</tt>
   object.
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>set(const set&amp;)</tt>
</TD>
<TD VAlign=top>
 <A href="Container.html">Container</A>
</TD>
<TD VAlign=top>
The copy constructor.
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>set&amp; operator=(const set&amp;)</tt>
</TD>
<TD VAlign=top>
 <A href="Container.html">Container</A>
</TD>
<TD VAlign=top>
The assignment operator
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>void swap(set&amp;)</tt>
</TD>
<TD VAlign=top>
 <A href="Container.html">Container</A>
</TD>
<TD VAlign=top>
Swaps the contents of two sets.
</TD>
</TR>
<TR>
<TD VAlign=top>
<pre>
pair&lt;iterator, bool&gt;
insert(const value_type&amp; x)
</pre>
</TD>
<TD VAlign=top>
 <A href="UniqueAssociativeContainer.html">Unique Associative Container</A>
</TD>
<TD VAlign=top>
Inserts <tt>x</tt> into the <tt>set</tt>.
</TD>
</TR>
<TR>
<TD VAlign=top>
<pre>
iterator insert(iterator pos, 
                const value_type&amp; x)
</pre>
</TD>
<TD VAlign=top>
 <A href="UniqueSortedAssociativeContainer.html">Unique Sorted Associative Container</A>
</TD>
<TD VAlign=top>
Inserts <tt>x</tt> into the <tt>set</tt>, using <tt>pos</tt> as a hint to where it will be
   inserted.
</TD>
</TR>
<TR>
<TD VAlign=top>
<pre>
template &lt;class <A href="InputIterator.html">InputIterator</A>&gt;
void insert(InputIterator, InputIterator)
<A href="#1">[1]</A>
</pre>
</TD>
<TD VAlign=top>
 <A href="UniqueSortedAssociativeContainer.html">Unique Sorted Associative Container</A>
</TD>
<TD VAlign=top>
Inserts a range into the <tt>set</tt>.
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>void erase(iterator pos)</tt>
</TD>
<TD VAlign=top>
 <A href="AssociativeContainer.html">Associative Container</A>
</TD>
<TD VAlign=top>
Erases the element pointed to by <tt>pos</tt>.
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>size_type erase(const key_type&amp; k)</tt>
</TD>
<TD VAlign=top>
 <A href="AssociativeContainer.html">Associative Container</A>
</TD>
<TD VAlign=top>
Erases the element whose key is <tt>k</tt>.
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>void erase(iterator first, iterator last)</tt>
</TD>
<TD VAlign=top>
 <A href="AssociativeContainer.html">Associative Container</A>
</TD>
<TD VAlign=top>
Erases all elements in a range.
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>void clear()</tt>
</TD>
<TD VAlign=top>
 <A href="AssociativeContainer.html">Associative Container</A>
</TD>
<TD VAlign=top>
Erases all of the elements.
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>iterator find(const key_type&amp; k) const</tt>
</TD>
<TD VAlign=top>
 <A href="AssociativeContainer.html">Associative Container</A>
</TD>
<TD VAlign=top>
Finds an element whose key is <tt>k</tt>.
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>size_type count(const key_type&amp; k) const</tt>
</TD>
<TD VAlign=top>
 <A href="UniqueAssociativeContainer.html">Unique Associative Container</A>
</TD>
<TD VAlign=top>
Counts the number of elements whose key is <tt>k</tt>.
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>iterator lower_bound(const key_type&amp; k) const</tt>
</TD>
<TD VAlign=top>
 <A href="SortedAssociativeContainer.html">Sorted Associative Container</A>
</TD>
<TD VAlign=top>
Finds the first element whose key is not less than <tt>k</tt>.
</TD>
</TR>
<TR>
<TD VAlign=top>
<tt>iterator upper_bound(const key_type&amp; k) const</tt>
</TD>
<TD VAlign=top>
 <A href="SortedAssociativeContainer.html">Sorted Associative Container</A>
</TD>
<TD VAlign=top>
Finds the first element whose key greater than <tt>k</tt>.
</TD>
</TR>
<TR>
<TD VAlign=top>
<pre>
pair&lt;iterator, iterator&gt; 
equal_range(const key_type&amp; k) const
</pre>
</TD>
<TD VAlign=top>
 <A href="SortedAssociativeContainer.html">Sorted Associative Container</A>
</TD>
<TD VAlign=top>
Finds a range containing all elements whose key is <tt>k</tt>.
</TD>
</TR>
<TR>
<TD VAlign=top>
<pre>
bool operator==(const set&amp;, 
                const set&amp;)
</pre>
</TD>
<TD VAlign=top>
 <A href="ForwardContainer.html">Forward Container</A>
</TD>
<TD VAlign=top>
Tests two sets for equality.  This is a global function, not
   a member function.
</TD>
</TR>
<TR>
<TD VAlign=top>
<pre>
bool operator&lt;(const set&amp;, 
               const set&amp;)
</pre>
</TD>
<TD VAlign=top>
 <A href="ForwardContainer.html">Forward Container</A>
</TD>
<TD VAlign=top>
Lexicographical comparison.  This is a global function, not
   a member function.
</TD>
</tr>
</table>
<h3>New members</h3>
All of <tt>set</tt>'s members are defined in the 
<A href="UniqueSortedAssociativeContainer.html">Unique Sorted Associative Container</A>
and <A href="SimpleAssociativeContainer.html">Simple Associative Container</A>
requirements.  <tt>Set</tt> does not introduce any new members.
<h3>Notes</h3>
<P><A name="1">[1]</A>
This member function relies on <i>member template</i> functions, which
at present (early 1998) are not supported by all compilers.  If your
compiler supports member templates, you can call this function with
any type of <A href="InputIterator.html">input iterator</A>.  If your
compiler does not yet support member templates, though, then the
arguments must either be of type <tt>const value_type*</tt> or of type
<tt>set::const_iterator</tt>.
<h3>See also</h3>
<A href="AssociativeContainer.html">Associative Container</A>, 
<A href="SortedAssociativeContainer.html">Sorted Associative Container</A>, 
<A href="SimpleAssociativeContainer.html">Simple Associative Container</A>,
<A href="UniqueSortedAssociativeContainer.html">Unique Sorted Associative Container</A>, 
<tt><A href="Map.html">map</A></tt>,
<tt><A href="multiset.html">multiset</A></tt>,
<tt><A href="Multimap.html">multimap</A></tt>,
<tt><A href="hash_set.html">hash_set</A></tt>, 
<tt><A href="hash_map.html">hash_map</A></tt>, 
<tt><A href="hash_multiset.html">hash_multiset</A></tt>, 
<tt><A href="hash_multimap.html">hash_multimap</A></tt>

<!--start footer--> 
<HR SIZE="6">
<A href="http://www.sgi.com/"><IMG SRC="surf.gif" HEIGHT="54" WIDTH="54" 
        ALT="[Silicon Surf]"></A>
<A HREF="index.html"><IMG SRC="stl_home.gif" 
        HEIGHT="54" WIDTH="54" ALT="[STL Home]"></A>
<BR>
<FONT SIZE="-2">
<A href="http://www.sgi.com/Misc/sgi_info.html" TARGET="_top">Copyright &copy; 
1999 Silicon Graphics, Inc.</A> All Rights Reserved.</FONT>
<FONT SIZE="-3"><a href="http://www.sgi.com/Misc/external.list.html" TARGET="_top">TrademarkInformation</A>
</FONT>
<P>
</BODY>
</HTML> 
